# Algorithms & Programming
Big Ideas - Click Here
**Big Ideas Covered:**
* **Algorithms (AL)**
* **Abstraction (AB)**
* **Program Development (CRD)**
* **Data (DAT)**
**Comprehensive Outline**
**3.1: Variables and Assignments**
* Understanding variables as symbolic names storing values
* How assignment statements change values
* Naming conventions and best practices
* Types of data: integer, float, string, Boolean
* **Key Skill:** Create and manipulate variables
**3.2: Data Types**
* Identifying common data types
* Type compatibility and implicit vs explicit casting
* Boolean logic and conditionals
* **Key Skill:** Reason through variable types and predict outcomes
**3.3: Managing Complexity with Procedures (Functions)**
* Defining and calling functions
* Parameters and return values
* Purpose of abstraction in program design
* Reducing repetition and improving clarity
* **Key Skill:** Write and use procedures to break down problems
**3.4: Developing Procedures**
* Decomposing problems into subproblems
* Sequencing instructions
* Identifying reusable logic
* **Key Skill:** Create modular and readable code using procedures
**3.5: Algorithms**
* Understanding algorithms as step-by-step processes
* Expressing algorithms in code, pseudocode, or flowcharts
* Identifying sequence, selection, and iteration
* **Key Skill:** Analyze and write simple algorithms (e.g., search, sort)
**3.6: Boolean Expressions and If Statements**
* Using `if`, `else if`, and `else`
* Relational operators (`==`, `!=`, `>`, `<`, `>=`, `<=`)
* Logical operators (`AND`, `OR`, `NOT`)
* **Key Skill:** Write conditional logic to control program flow
**3.7: Iteration (Loops)**
* `for` loops and `while` loops
* Loop control: incrementing, breaking, and nested loops
* Trace and debug loop execution
* **Key Skill:** Use loops to automate repeated tasks
**3.8: Combining Elements to Solve Problems**
* Integrating variables, conditionals, and loops
* Building algorithms to solve complex problems
* Emphasis on testing and debugging
* **Key Skill:** Synthesize programming elements into working solutions
**3.9: Developing Algorithms**
* Using existing algorithms or creating new ones
* Refining and testing algorithms
* Representing algorithms as pseudocode and/or diagrams
* **Key Skill:** Plan, document, and implement multi-step logic
**3.10: Errors and Testing**
* Types of errors: syntax, logic, and runtime
* Use of test cases and debugging strategies
* Reading error messages and tracebacks
* **Key Skill:** Find and fix problems systematically
**3.11: Binary Search vs Linear Search**
* Linear search: simple, but slower for large data
* Binary search: faster, requires sorted data
* Tradeoffs in algorithm efficiency
* **Key Skill:** Compare search algorithms conceptually and in code
**3.12: Comparing Algorithmic Efficiency**
* Number of steps vs size of input (n)
* Informal analysis of algorithm runtime
* Big picture: efficiency impacts user experience and scalability
* **Key Skill:** Evaluate which algorithm is “better” and why
**3.13: Developing Programs**
* Problem identification, solution design
* Iterative development process: test, debug, refine
* Use of documentation and comments
* Collaboration and code review
* **Key Skill:** Design and build real programs with purpose
**Key Vocabulary**:
* Algorithm
* Abstraction
* Procedure
* Loop / Iteration
* Boolean
* Conditionals
* Debugging
* Linear/Binary Search
* Efficiency
* Input/Output
* Parameters / Return
**Suggested Activities:**
* **Debugging challenges**
* **Code tracing worksheets**
* **Huffman coding (as a stretch topic for algorithms)**
* **Block-based to text-based translation (e.g., Scratch to Python)**
* **Write and refine a simple calculator or game logic**
* **Pseudocode practice and flowcharts**
**AP CSP: Algorithms and Programming Project Packet**
Each project includes meaningful challenges in problem-solving, design, data abstraction, and algorithmic thinking, and supports multiple CSP standards.
---
Project 1: Data Visualization Challenge
**College Board Learning Objectives:**
* DAT-2.D: Describe the purpose of a computational artifact.
* DAT-2.E: Create a computational artifact using data.
* AAP-2.J: Create programs that use libraries or APIs.
**Summary:**
Students will analyze a real-world dataset (e.g., climate, sports, health) and build a program that visualizes the data through graphs or interactive charts. They must clean the data, apply algorithms to extract meaning, and generate visual output.
**Deliverables:**
* Python or JavaScript program with visualization
* Annotated code with explanations
* 1-page summary of insights from the data
**Assessment Rubric:**
Project 1: Data Visualization Challenge
**College Board Learning Objectives:**
* DAT-2.D: Describe the purpose of a computational artifact.
* DAT-2.E: Create a computational artifact using data.
* AAP-2.J: Create programs that use libraries or APIs.
**Summary:**
Students will analyze a real-world dataset (e.g., climate, sports, health) and build a program that visualizes the data through graphs or interactive charts. They must clean the data, apply algorithms to extract meaning, and generate visual output.
**Deliverables:**
* Python or JavaScript program with visualization
* Annotated code with explanations
* 1-page summary of insights from the data
**Assessment Rubric:**
| Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning |
| -------------------------- | -------------------------------------------------------------- | -------------------------------------- | --------------------------------- | --------------------------------------- |
| Data Processing & Accuracy | Data is cleaned, processed, and represented with high accuracy | Data mostly processed correctly | Some data processed, minor errors | Major issues or missing data processing |
| Program Functionality | Fully functional and interactive | Mostly functional, minor bugs | Partially functional | Non-functional or incomplete |
| Algorithm Use | Well-structured and efficient algorithms | Logical and mostly correct | Some inefficiency or errors | Poor or no algorithmic structure |
| Visualization Clarity | Highly clear, informative, and visually appealing | Generally clear and well-organized | Some visual confusion | Unclear or poorly designed |
| Communication & Creativity | Excellent explanation and innovative presentation | Clear explanation with some creativity | Basic explanation | Poorly explained or lacking originality |
---
Project 2: Custom Algorithm Design
**College Board Learning Objectives:**
* AAP-2.C: Develop an algorithm.
* AAP-2.G: Express an algorithm using sequencing, selection, and iteration.
* AAP-2.K: Evaluate algorithms.
**Summary:**
Students will identify a real-world or classroom problem and design a custom algorithm to solve it. The algorithm should include clear use of control structures and be implemented in code.
**Deliverables:**
* Problem description
* Flowchart or pseudocode
* Working program with documentation
* Analysis of algorithm efficiency (qualitative)
**Assessment Rubric:**
Project 2: Custom Algorithm Design
**College Board Learning Objectives:**
* AAP-2.C: Develop an algorithm.
* AAP-2.G: Express an algorithm using sequencing, selection, and iteration.
* AAP-2.K: Evaluate algorithms.
**Summary:**
Students will identify a real-world or classroom problem and design a custom algorithm to solve it. The algorithm should include clear use of control structures and be implemented in code.
**Deliverables:**
* Problem description
* Flowchart or pseudocode
* Working program with documentation
* Analysis of algorithm efficiency (qualitative)
**Assessment Rubric:**
| Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning |
| --------------------- | ------------------------------------------ | ------------------------------------------- | -------------------- | ---------------------------------- |
| Problem Definition | Clearly articulated and meaningful | Clear and solvable | Vague or simplistic | Unclear or undeveloped |
| Algorithm Design | Innovative, efficient, and well-structured | Logical with appropriate control structures | Some logical flaws | Poor structure or missing elements |
| Code Implementation | Clean, correct, and complete | Mostly correct with some issues | Partially functional | Incomplete or not working |
| Algorithm Explanation | Insightful and clearly communicates logic | Reasonably clear explanation | Limited clarity | Missing or incorrect explanation |
---
Project 3: Text-Based Game Development
**College Board Learning Objectives:**
* AAP-2.I: Use procedures to organize code.
* AAP-2.M: Develop programs that use lists.
* AAP-2.N: Use procedures that operate on data in lists.
**Summary:**
Students will design and build a text-based adventure game using procedures and data structures. They will implement lists, control flow, and functions to support reusable code and dynamic behavior.
**Deliverables:**
* Fully functional game (e.g., Python, Java)
* Code with at least two custom procedures and one list-based mechanic
* Game map or flow diagram
**Assessment Rubric:**
Project 3: Text-Based Game Development
**College Board Learning Objectives:**
* AAP-2.I: Use procedures to organize code.
* AAP-2.M: Develop programs that use lists.
* AAP-2.N: Use procedures that operate on data in lists.
**Summary:**
Students will design and build a text-based adventure game using procedures and data structures. They will implement lists, control flow, and functions to support reusable code and dynamic behavior.
**Deliverables:**
* Fully functional game (e.g., Python, Java)
* Code with at least two custom procedures and one list-based mechanic
* Game map or flow diagram
**Assessment Rubric:**
| Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning |
| ------------------------ | ----------------------------------------------------------- | -------------------------------- | --------------------------- | -------------------------------------- |
| Game Logic & Playability | Highly engaging and bug-free | Playable with minor bugs | Playable but limited | Unplayable or incomplete |
| Procedures & Lists | Uses multiple reusable procedures and well-integrated lists | Appropriate use of both elements | Limited or inconsistent use | Missing procedures or list integration |
| Code Structure | Well-organized and readable | Mostly clear organization | Some disorganization | Hard to follow or messy |
| Creativity & Innovation | Highly original and engaging concept | Some creativity | Basic or conventional | Lacking originality |
---
Project 4: Debugging & Code Review Simulation
**College Board Learning Objectives:**
* AAP-1.C: Identify and correct errors in programs.
* AAP-2.F: Evaluate expressions that use arithmetic operators.
* AAP-2.H: Determine the result of program execution.
**Summary:**
Students will be given a broken or inefficient program. Their job is to debug it, improve it, and write a peer review report explaining how and why they made their changes.
**Deliverables:**
* Corrected source code
* Side-by-side comparison with the original
* Peer review report (1 page)
**Assessment Rubric:**
Project 4: Debugging & Code Review Simulation
**College Board Learning Objectives:**
* AAP-1.C: Identify and correct errors in programs.
* AAP-2.F: Evaluate expressions that use arithmetic operators.
* AAP-2.H: Determine the result of program execution.
**Summary:**
Students will be given a broken or inefficient program. Their job is to debug it, improve it, and write a peer review report explaining how and why they made their changes.
**Deliverables:**
* Corrected source code
* Side-by-side comparison with the original
* Peer review report (1 page)
**Assessment Rubric:**
| Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning |
| ------------------ | ------------------------------------------- | --------------------------------------- | ------------------------------------- | -------------------------------- |
| Bug Identification | All bugs correctly identified and explained | Most bugs identified | Some bugs found | Few or no bugs identified |
| Debugging Quality | Efficient and optimal fixes applied | Functional fixes with some inefficiency | Fixes with side effects or redundancy | Buggy or no fixes applied |
| Code Comparison | Clear and complete before/after comparison | Some comparison shown | Basic or unclear comparison | No clear comparison |
| Review Explanation | Detailed reasoning and reflection | Some reasoning included | Minimal or vague explanation | Missing or incorrect explanation |
---
Project 5: Algorithm Museum (Explainer Showcase)
**College Board Learning Objectives:**
* AAP-2.L: Explain how algorithms reflect different approaches to solving problems.
* CRD-2.C: Identify inputs and outputs of a program.
* AAP-2.K: Evaluate algorithms.
**Summary:**
Students select a classic algorithm (e.g., sorting, searching, pathfinding) and create an interactive or visual explainer. They must describe inputs/outputs, explain its function, and compare it with an alternative.
**Deliverables:**
* Explainer artifact (video, animation, poster, slideshow, etc.)
* Input/output examples
* Comparative write-up
**Assessment Rubric:**
Project 5: Algorithm Museum (Explainer Showcase)
**College Board Learning Objectives:**
* AAP-2.L: Explain how algorithms reflect different approaches to solving problems.
* CRD-2.C: Identify inputs and outputs of a program.
* AAP-2.K: Evaluate algorithms.
**Summary:**
Students select a classic algorithm (e.g., sorting, searching, pathfinding) and create an interactive or visual explainer. They must describe inputs/outputs, explain its function, and compare it with an alternative.
**Deliverables:**
* Explainer artifact (video, animation, poster, slideshow, etc.)
* Input/output examples
* Comparative write-up
**Assessment Rubric:**
| Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning |
| ----------------------- | ----------------------------------------------- | ------------------------ | ------------------------------ | ------------------------------------- |
| Algorithm Explanation | Clear, deep explanation with visuals/examples | Mostly clear explanation | Some confusion or gaps | Inaccurate or unclear explanation |
| Inputs & Outputs | Well-explained with accurate examples | Mostly correct | Minor errors or omissions | Missing or incorrect examples |
| Comparison & Evaluation | Thoughtful comparison of two or more approaches | Adequate comparison | Limited insight or explanation | No meaningful comparison |
| Presentation Quality | Polished, creative, and informative | Clear and informative | Somewhat unclear | Hard to understand or poorly executed |
---